package com.hsu.yupao.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * 配置跨源资源共享（CORS）。
 * 此类用于定义和配置CORS，允许前端应用从不同的源地址访问后端服务。
 * @ClassName: WebMVCConfig
 * @author Hsu琛君珩
 * @date 2024-06-06
 * @apiNote 此配置类设置CORS，使前端应用能够与后端进行跨域通信。
 * @Version: v1.0
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 为所有API路由允许跨域请求
        registry.addMapping("/**")
                // 允许携带证书（如cookies）
                .allowCredentials(true)
                // 指定允许的跨域请求的发起域
                .allowedOriginPatterns("http://localhost:5173")
                // 允许跨域请求的方法
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                // 允许的请求头
                .allowedHeaders("*")
                // 允许浏览器访问的响应头
                .exposedHeaders("*")
                // 预检请求的结果缓存时间，减少预检请求的频率
                .maxAge(3600);
    }
}
